
#ifndef SX_PICKABLE_H
#define SX_PICKABLE_H

#include <sxMath.h>

namespace Sx {
namespace Graphics {
namespace Picking {

class Pickable {
public:
	/*
	 * Derived types that implement this interface should use the pick function
	 * to perform any internal operations related to picking. If a basic
	 * intersection test is desired then intersect(segmentStart, segmentEnd) 
	 * should be used instead.
	 */
	virtual bool pick(const Eigen::Vector3f& pickSegmentStart, const Eigen::Vector3f& pickSegmentEnd, Eigen::Vector3f& intersectionPoint) = 0;
};

}

}

}

#endif
